Data storage systems are arrangements of hardware and software that include storage processors coupled to arrays of non-volatile storage devices, such as magnetic disk drives, electronic flash drives, and/or optical drives, for example. The storage processors service storage requests, arriving from host machines (“hosts”), which specify files or other data elements to be written, read, created, deleted, and so forth. Software running on the storage processors manages incoming storage requests and performs various data processing tasks to organize and secure the data elements stored on the non-volatile storage devices.
In some arrangements, a data storage system includes a cache, which enables the data storage system quickly to acknowledge write requests arriving from hosts. For example, the data storage system may store a data object and receive an IO (Input/Output) request specifying data to be written to a specified location in that data object. Rather than writing the data to the specified location directly, which may entail delays for mapping, spinning up disk drives, and so forth, the data storage system instead writes the data to cache. The cache may be implemented in fast, semiconductor memory, such that the write to cache occurs very quickly. Once the data storage system confirms that the host data are securely stored in the cache, the data storage system may send an acknowledgement back to the originating host, to confirm that the write has been completed. Later, out of band with the write request, the data storage system maps the data to its target location and stores the data in persistent storage devices, such as magnetic disk drives, electronic flash drives, and so forth. The use of the cache therefore enables the data storage system to respond much more quickly to host writes than it would if it had to perform mapping and storage to disk in-line with IO requests.